﻿$(document).ready(function () {
    var DomUtil = onyx.util.DomUtil,
        EventUtil = onyx.util.EventUtil;
    onyx.conf({
        ajax: {
            defaultHandler: "common",
            handlers: {
                common: "../../Admin/Ajax.ashx"
            }
        }
    });

    /** datagrid自适应 **/
    var sec = 50;
    window.onresize = function () {
        setTimeout(function () {
            $('#tbCenter').datagrid('resize', {
                height: $('#divCenter').height(),
                width: $('#divCenter').width()
            });
        }, sec);
    };
    $('#center').panel({
        onResize: function () {
            setTimeout(function () {
                $('#tbCenter').datagrid('resize', {
                    height: $('#divCenter').height(),
                    width: $('#divCenter').width()
                });
            }, sec);
        }
    });

    /** 初始化datagrid **/
    $('#tbCenter').datagrid({
        iconCls: 'icon-search',
        rownumbers: true,
        pagination: true,
        pageSize: 100,
        pageList: [100],
        fit: true,
        singleSelect: true,
        toolbar: '#divCntToolBar',
        nowrap: true,
        loadMsg: '正在努力加载数据...',
        //onLoadSuccess: function (data) {

        //},
        onLoadError: function () {
            alert("加载数据失败！");
        }
    });
    $loadList(function (items) {
    });
    /** 搜索按钮事件 **/
    $('#btnSearch').click(function () {
        $loadList(null, 1, 100);
        $('#tbCenter').datagrid('getPager').pagination({
            onSelectPage: function (pageNo, pageSize) {
                if (pageNo == undefined) pageNo = 1;
                $loadList(null, pageNo, pageSize);
            }
        });
    });

    /** 新建按钮事件 **/
    $('#btnAdd').click(function () {
        //console.log("add");
        $('#tbCenter').datagrid('unselectAll');
        $('#formEdit').form('reset');

        $('#formEdit').form('load', {
            formAction: 'add',
            [#IdAlias#]: 0,
            [#ColumnsFormAdd#]
        });
        $('#divEdit').window('open');
    });

    /** 编辑按钮事件 **/
    $('#btnEdit').click(function () {
        $('#formEdit').form('reset');

        var row = $('#tbCenter').datagrid('getSelected');
        if (row) {
            $('#formEdit').form('load', row);
            $('#formAction').val('edit');
            $('#divEdit').window('open');
        } else {
            $.messager.alert('警告', '没有选择任何记录！', 'warning');
            return;
        }

    });

    /** 表单提交按钮事件 
        对ID或combobox控件中bool类型的，转为Int（parseInt()）
    **/
    $('#formSubmit').click(function () {
        var formAction = $('#formAction').val(),
			[#ColumnsFormSubmit#]
        var o = {};
		[#ColumnsObj#]

        switch (formAction) {
            case "add":
                $addItem(o);
                break;
            case "edit":
                o.[#IdAlias#] = parseInt($('#[#IdAlias#]').val());
                $editItem(o);
                break;
            default:
                $.messager.alert('错误', '请求表单动作错误！', 'warning');
                break;
        }
    });

    /** 表单取消按钮事件 **/
    $('#formBack').click(function () {
        $('#divEdit').window('close');
    });

    /** 删除按钮事件 **/
    $('#btnDelete').click(function () {
        var row = $('#tbCenter').datagrid('getSelected');
        if (row) {
            $.messager.confirm('提示', '确定删除[' + row.[#IdAlias#] + ']吗？', function (r) {
                if (r) {
                    var o = {};
                    o.[#IdAlias#] = row.[#IdAlias#];
                    $deleteItem(o);
                }
                else {
                    $.messager.show({
                        title: '信息', msg: '已经取消了删除操作'
                    });
                }
            });
        } else {
            $.messager.alert('警告', '没有选择任何记录！', 'warning');
            return;
        }
    });

    /** 取消选择按钮事件 **/
    $('#btnUnSelect').click(function () {
        $('#tbCenter').datagrid('unselectAll');
        $('#tbCenter').datagrid('uncheckAll');
    });
});

/**【CRUD】**/
function $loadList(func, pageNo, pageSize) {
    var enabled = $('#selEnable').combobox('getValue');
    var keyword = $('#searchKeyword').val();
    if (!pageNo) pageNo = 1;
    if (!pageSize) pageSize = 100;
    var reqParams = {
        'enabled': enabled,
        'keyword': keyword,
        'pageNo': pageNo,
        'pageSize': pageSize
    }

    onyxAjax({
        act: "[#apiPrefix#].[#sClsName#].list",
        prms: {
            qry: reqParams
        },
        callback: function (rt) {
            if (!rt.succ()) {
                var err = rt.msg();
                alert("[#apiPrefix#].[#sClsName#].list接口返回：" + err);
            } else {
                var rss = { "total": 0, "rows": [] };
                var rsES = rt.result("[#sClsName#]s");
                if (rsES != null && rsES.size() > 0) {
                    rss = { "total": rsES.size(), "rows": rsES.arr() }
                } else {
                    $.messager.alert('警告', '记录为空或查询不到符合条件的记录！', 'warning');
                }
                $('#tbCenter').datagrid('loadData', rss);
            }
        }
    });
}

function $addItem(o) {
    onyxAjax({
        act: "[#apiPrefix#].[#sClsName#].add",
        prms: {
            [#sClsName#]: o
        },
        callback: function (rt) {
            if (!rt.succ()) {
                var err = rt.msg();
                alert("[#apiPrefix#].[#sClsName#].add接口返回：" + err);
            } else {
                var rsES = rt.result("[#sClsName#]s").first();
                if (rsES != null) {
                    alert("增加记录成功");
                    $('#divEdit').window('close');
                    $loadList(function (items) { });
                }
                else {
                    alert("增加记录失败");
                }
            }
        }
    });
}

function $editItem(o) {
    onyxAjax({
        act: "[#apiPrefix#].[#sClsName#].update",
        prms: {
            [#sClsName#]: o
        },
        callback: function (rt) {
            if (!rt.succ()) {
                var err = rt.msg();
                alert("[#apiPrefix#].[#sClsName#].update接口返回：" + err);
            }
            else {
                var rsES = rt.result("[#sClsName#]s").first();
                if (rsES != null) {
                    alert("更新记录成功");
                    $('#divEdit').window('close');
                    $loadList(function (items) { });
                }
                else {
                    alert("更新记录失败");
                }
            }
        }
    });
}

function $deleteItem(o) {
    onyxAjax({
        act: "[#apiPrefix#].[#sClsName#].delete",
        prms: {
            [#sClsName#]: o
        },
        callback: function (rt) {
            if (!rt.succ()) {
                alert("删除记录失败");
            }
            else {
                alert("删除记录成功");
                $loadList(function (items) { });
            }
        }
    });
}
